home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
Dev
/
Amiga-E
/
E_v3.2a_extras
/
PdSrc
/
Lang
/
Yax
/
xpaint.yax
< prev
next >
Wrap
Lisp/Scheme
|
1992-09-02
|
2KB
|
76 lines
/* paint program using the new intuition functions */
(when (not (kick 37)) (write 'I need v37+!') (exit))
(string title)
(set title 'Xpaint++ v0.1 by $#%!')
(set maxx 320) (set maxy 200)
(set col 1) (set tool 0) (set ox -1) (set oy -1)
(set f 0) (set mode 0) (set off 30)
(set depth (+ (req title 'number of colours?' '4|8|16|2') 1))
(set flags (* (req title 'mode?' 'hires|lowres') $8000))
(set flags (+ flags (* (req title 'lace?' 'yes|no') 4)))
(set maxy (+ maxy (* (req title 'pal?' 'yes|no') 56)))
(if (> flags $7FFF) (set maxx (* maxx 2)))
(if (and flags 4) (set maxy (* maxy 2)))
(screen maxx maxy depth flags title)
(win 0 1 maxx (- maxy 1) $268 $100E title)
(line 0 (- off 1) maxx (- off 1) 1)
(gadget 1 5 15 55 'colour')
(gadget 2 65 15 55 'tools')
(gadget 3 125 15 55 'mode')
(gadget 4 185 15 55 'clear')
(gadget 5 245 15 55 'about')
(set noquit 1)
(defun ymouse () (if (or (< (set d (mousey)) off) (> d maxy)) off d))
(defun dogad ()
(select (gadid)
1 (set col (req title 'pick colour:' '1|2|3|4|5|6|7|0'))
2 (do
(set tool (req title 'use tool:' 'poly|line|box|dot|free'))
(set ox -1) (set oy -1) (set f 0)
)
3 (set mode (req title 'mode:' 'cycle|mirror|norm'))
4 (box 0 off maxx maxy 0)
5 (req title 'Xpaint++ written in YAX!' 'ok')
)
)
(defun dotool (x y)
(if (eq ox -1) (set ox x))
(if (eq oy -1) (set oy y))
(select mode
1 (set col (if (eq col 15) 1 (+ col 1)))
2 (set tool 4)
)
(select tool
0 (do
(while (eq (mouse) 1)
(set ox x) (set oy y)
(line ox oy (set x (mousex)) (set y (ymouse)) col)
)
)
1 (line ox oy x y col)
2 (do (if f (line ox oy x y col)) (set f (- 1 f)))
3 (do (if f (box ox oy x y col)) (set f (- 1 f)))
4 (do
(box x y (+ x 2) (+ y 2) col)
(if (eq mode 2) (box (- maxx x) y (+ (- maxx x) 2) (+ y 2) col))
)
)
(set ox x) (set oy y)
)
(while noquit
(select (message)
$200 (set noquit 0)
$040 (dogad)
$020 (dogad)
$008 (dotool (mousex) (ymouse))
)
)